package com.whfc.fse.dao;

import com.whfc.fse.dto.FseCrawlerDTO;
import com.whfc.fse.entity.FseCrawler;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021/10/30 16:24
 */
@Repository
public interface FseCrawlerMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(FseCrawler record);

    int insertSelective(FseCrawler record);

    FseCrawler selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(FseCrawler record);

    int updateByPrimaryKey(FseCrawler record);

    /**
     * 查找履带吊列表
     *
     * @param deptId   组织架构ID
     * @param bindFlag 绑定状态
     * @param netState 网络状态
     * @param keyword  搜索关键字
     * @return 履带吊列表
     */
    List<FseCrawlerDTO> selectCrawlerList(@Param("deptId") Integer deptId,
                                          @Param("bindFlag") Integer bindFlag,
                                          @Param("netState") Integer netState,
                                          @Param("keyword") String keyword);

    /**
     * 根据编码查找履带吊
     *
     * @param deptId 组织机构ID
     * @param code   编码
     * @return 履带吊
     */
    FseCrawler selectByDeptIdAndCode(@Param("deptId") Integer deptId, @Param("code") String code);
    List<FseCrawler> selectBycrawlerIds( @Param("crawlerIds") List<Integer> crawlerIds);

    /**
     * 逻辑删除履带吊
     *
     * @param crawlerId 履带吊ID
     */
    void deleteLogicById(@Param("crawlerId") Integer crawlerId);

    /**
     * 根据硬件编码和厂商查找设备
     *
     * @param sn
     * @param platform
     * @return
     */
    FseCrawler selectBySnAndPlatform(@Param("sn") String sn,
                                     @Param("platform") String platform);

    /**
     * 更新绑定状态
     *
     * @param crawlerId 履带吊ID
     * @param platform  平台
     * @param bindFlag  绑定状态
     * @param sn        硬件序列号
     * @param netState  网络状态
     */
    void updateBindFlag(@Param("crawlerId") Integer crawlerId,
                        @Param("platform") String platform,
                        @Param("bindFlag") Integer bindFlag,
                        @Param("sn") String sn,
                        @Param("netState") Integer netState);

    /**
     * 更新设备状态
     *
     * @param netState 设备状态
     */
    void updateAllDeviceNetState(@Param("netState") Integer netState);
}